/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Entidades;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author diego
 */
@Entity
@Table(name = "Licencia")
public class Licencia implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Basic(optional = false)
    @Column(name = "idLicencia")
    private Integer idLicencia;
    @Column(name = "fechaFinLicencia")
    @Temporal(TemporalType.DATE)
    private Date fechaFinLicencia;
    @Column(name = "fechaInicioLicencia")
    @Temporal(TemporalType.DATE)
    private Date fechaInicioLicencia;
    @Column(name = "numeroLicencia")
    private Integer numeroLicencia;
    @JoinColumn(name = "idEmpleado", referencedColumnName = "idEmpleado")
    @ManyToOne(optional = false)
    private Empleado idEmpleado;
    @JoinColumn(name = "idtipoLicencia", referencedColumnName = "idtipoLicencia")
    @ManyToOne(optional = false)
    private TipoLicencia idtipoLicencia;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idLicencia")
    private List<EstadoLicencia> estadoLicencia;

    public Licencia() {
    }

    public Licencia(Integer idLicencia) {
        this.idLicencia = idLicencia;
    }

    public Integer getIdLicencia() {
        return idLicencia;
    }

    public void setIdLicencia(Integer idLicencia) {
        this.idLicencia = idLicencia;
    }

    public Date getFechaFinLicencia() {
        return fechaFinLicencia;
    }

    public void setFechaFinLicencia(Date fechaFinLicencia) {
        this.fechaFinLicencia = fechaFinLicencia;
    }

    public Date getFechaInicioLicencia() {
        return fechaInicioLicencia;
    }

    public void setFechaInicioLicencia(Date fechaInicioLicencia) {
        this.fechaInicioLicencia = fechaInicioLicencia;
    }

    public Empleado getIdEmpleado() {
        return idEmpleado;
    }

    public void setIdEmpleado(Empleado idEmpleado) {
        this.idEmpleado = idEmpleado;
    }

    public Integer getNumeroLicencia() {
        return numeroLicencia;
    }

    public void setNumeroLicencia(Integer numeroLicencia) {
        this.numeroLicencia = numeroLicencia;
    }

    public List<EstadoLicencia> getEstadoLicenciaCollection() {
        return estadoLicencia;
    }

    public void setEstadoLicenciaCollection(List<EstadoLicencia> estadoLicenciaCollection) {
        this.estadoLicencia = estadoLicenciaCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idLicencia != null ? idLicencia.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Licencia)) {
            return false;
        }
        Licencia other = (Licencia) object;
        if ((this.idLicencia == null && other.idLicencia != null) || (this.idLicencia != null && !this.idLicencia.equals(other.idLicencia))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return numeroLicencia.toString();
    }
    public TipoLicencia getIdtipoLicencia() {
        return idtipoLicencia;
    }
    public void setIdtipoLicencia(TipoLicencia idtipoLicencia) {
        this.idtipoLicencia = idtipoLicencia;
    }
}
